package com.apps.java.javanote;

public class _8字符串 {
    public static void main(String[] args) {
        /**
         * 一、API
         * 		概述：
         * 			API（Application Programming Interface):应用程序编程接口
         * 			javaAPI：指的就是JDK中提供的各种功能的java类，这些类将底层的实现封装了起来。
         *
         * 		注意：
         * 			调用方法的时候，如果方法有明确的返回值，我们用变量接收，
         * 			可以手动完成，也可以使用快捷键的方式完成（ctrl+1）
         *
         * 二、String
         * 		概述：
         * 			String类在java.lang包下，所以使用时无需导包。
         * 			String类代表字符串，java程序中的所有字符串文字（例如"abc"）都被实现为此类的实例，
         * 			也就是说，Java程序中所有的双引号字符串，都是String类的对象。
         * 		特点：
         * 			1.字符串不可变，它们的值在创建后不能被更改。
         * 			2.虽然String的值是不可改变的，但是它们可以被共享
         * 			3.字符串效果上相当于字符数组（char[]），但是底层原理是字符数组（byte[]）
         *
         * 		String 构造方法[常用]：
         * 			public String()：			创建一个空白字符串对象，不含有任何内容。
         * 			public String(char[] chs)：	根据字符数组的内容，来创建字符串对象。
         * 			public String(byte[] bys)：	根据字节数组的内容，来创建字符串对象。
         * 			String s = "abc";：			直接赋值的方式创建字符串对象，内容就是abc
         * 			推荐使用直接赋值的方式得到字符串对象
         *
         * 			特点：
         * 				1.通过new创建的字符串对象，每一次new都会申请一个内存空间，虽然内容相同，但是地址值不同。
         * 					char[] chs = {'a','b','c'};
         * 					String s1 = new String(chs);
         * 					String s1 = new String(chs);
         * 				     上面的代码中，JVM会首先创建一个字符数组，然后每一次new的时候都会有一个新的地址，只不过s1和s2
         * 				     参考的字符串内容是相同的。
         * 				2.以""方式给出的字符串，只要字符序列相同（顺序和大小写），无论在程序代码中出现几次，JVM都只会建立一个String对象
         * 				     并在字符串池中维护。
         * 					String s3 = "abc";
         * 					String s4 = "abc";
         * 				     在上面的代码中，针对第一行代码，JVM会建立一个String对象放在字符串池中，并给s3参考；
         * 				     第二行则让s4直接参考字符串池中的String对象，也就是说它们本质上是同一个对象。
         *
         * 		字符串的比较：
         * 			使用==做比较
         * 				基本类型：比较的是数据值是否相同。
         * 				引用类型：比较的是地址值是否相同。
         *
         * 			字符串是对象，它比较内容是否相同，是通过一个方法来实现的，这个方法叫equals()
         * 				public boolean equals(Object anObject)：将此字符串与指定对象进行比较。由于我们比较的是字符串对象，
         * 													         所以参数直接传递一个字符串。
         * 		通过帮助文档查看String中的方法：
         * 			方法名										说明
         * 			public boolean equals(Object anObject)		比较字符串的内容，严格区分大小写（用户名和密码）
         * 			public char charAt(int index)				返回指定索引处的char值
         * 			public int length()							返回此字符串的长度
         *
         * 三、StringBuilder
         * 		概述：StringBuilder是一个可变的字符串类，我们可以把它看做是一个容器，
         * 			 这里的可变指的是StringBuilder对象中的内容是可变的。
         *
         * 		String和StringBuilder的区别：
         * 			String：			内容不可变的
         *			StringBuilder： 	内容可变的
         *
         * 		StringBuilder构造方法：
         * 			public StringBuilder()				创建一个空白可变字符串对象，不含有任何内容
         * 			public StringBuilder(String str)	根据字符串的内容，来创建可变字符串对象
         *
         * 		StringBuilder和String相互转换
         * 			1.StringBuilder转换为String
         * 				public String toString()：通过toString()就可以实现把StringBuilder转换为String。
         * 			2.String转换为StringBuilder
         * 				public StringBuilder(String s)：通过构造方法就可以实现吧String转换为StringBuilder。
         *
         * 		通过帮助文档查看StringBuilder中的方法：
         * 			public StringBuilder append(任意类型)：	添加数据，并返回对象本身
         * 			public StringBuilder reverse()：			返回相反分字符序列
         * 			public String toString()：				通过toString()就可以实现吧StringBuilder转换为String
         *
         *
         */



		/*
		Scanner sc = new Scanner(System.in);
		System.out.println("输入一个字符串数据：");
		String line = sc.nextLine();
		System.out.println("你输入的是："+line);
		*/



		/*
		//String构造方法：

			//1.public String()：创建一个空白字符串对象，不含有任何内容。
				String s1 = new String();
				System.out.println("s1:"+s1);

			//2.public String(char[] chs)：根据字符数组的内容，来创建字符串对象。
				char[] chs = {'a','b','c'};
				String s2 = new String(chs);
				System.out.println("s2:"+s2);

			//3.public String(byte[] bys)：根据字节数组的内容，来创建字符串对象。
				byte[] bys= {97,98,99};
				String s3 = new String(bys);
				System.out.println("s3:"+s3);

			//4.String s = "abc";：直接赋值的方式创建字符串对象，内容就是abc
				String s4 = "abc";
				System.out.println("s4:"+s4);
		*/


		/*StringBuilder:
		//public StringBuilder():创建一个空白可变字符串对象，不含有任何内容
		StringBuilder sb = new StringBuilder();
		System.out.println("sb=="+sb);
		System.out.println("sb.length=="+sb.length());

		//public StringBuilder(String str):根据字符串的内容，来创建可变字符串对象
		StringBuilder sbu = new StringBuilder("hello");
		System.out.println("sbu=="+sbu);
		System.out.println("sbu.length=="+sbu.length());
		*/

    }
}
